OFD开发系列(一)

您所在的位置:网站首页 ofd 文档 OFD开发系列(一)

OFD开发系列(一)

2023-09-22 09:30| 来源: 网络整理| 查看: 265

一、OFD前言

        OFD文档目前在国内如雨后春笋般出现,这要归功于OFD本身巧妙的版式设计、友好的国标文档《GBT_33190-2016_电子文件存储与交换格式版式文档》和各大开源作者的贡献。目前参与到该版式文档的,除了数科、福析等商业公司之外,还有很多个人开发者的项目值得学习研究,例如:ofdrw、iofd、ofd.js等。OFD应用广泛,目前在税局发票和电子合同应用较多。在可预见的未来,OFD将成为比肩PDF的文档标准。OFD基于xml语言描述,有一定的层级结构,最后打包成zip,扩展名为.ofd,可以直接使用7z进行解压缩,详细描述参考上文提到的国标文档。

 

二、功能特性

        目前PDF支持的业务功能大体有如下几个部分:表单填充,水印填充,签章验章,文档生成,文档修改,文档阅读等。其中,OFD同样支持这些特性,另外,OFD支持附件,目录,大纲,模板,版本等更有意思的特性。本系列文章将对这些特性和功能进行解读和开发。文章基于ofdrw开源软件,git地址:https://github.com/Trisia/ofdrw。

 

三、本期看点

        本期首先对水印填充进行介绍和开发。水印,在OFD里属于注释的一部分,注释有很多种类型,其中一种就是水印,该部分位于《GBT_33190-2016_电子文件存储与交换格式版式文档》第15.1章节,感兴趣的读者可以下载该标准文档进行更详细的了解和学习。

 

四、代码开发

 

4.1、引入ofdrw

        首先引入ofdrw到maven项目,ofdrw只依赖commons-io包,如下:

junit junit 4.12 provided commons-io commons-io 2.6 provided org.ofdrw ofdrw-full 1.6.4

4.2、编写代码

        此处代码注意有输入路径和输出路径,我们使用try-with-resource的方式进行编码,使用OFDReader类对文档进行读取,使用OFDDoc类对文档进行修改,同时使用Annotation添加注释,通过OFDDoc把注释添加到对应的页面。代码如下:

/** * 水印处理 */ @Test public void addWatermark() throws IOException { Path srcP = Paths.get("src/main/resources", "x.ofd"); Path outP = Paths.get("target/AddWatermarkAnnot.ofd"); Path imgPath = Paths.get("src/test/resources", "eg_tulip.jpg"); try (OFDReader reader = new OFDReader(srcP); OFDDoc ofdDoc = new OFDDoc(reader, outP)) { Double width = ofdDoc.getPageLayout().getWidth(); Double height = ofdDoc.getPageLayout().getHeight(); Annotation annotation = new Annotation(new ST_Box(0d, 0d, width, height), AnnotType.Watermark, ctx -> { FontSetting setting = new FontSetting(8, FontName.SimSun.font()); ctx.setFillColor(170, 160, 165) .setFont(setting) .setGlobalAlpha(0.4);   //对ofd页面填充8行8列的水印,并顺时针旋转45° for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3